home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl720 / bxprntjj.lzh / TEST1.C < prev    next >
Text File  |  1990-11-30  |  2KB  |  84 lines

  1. /* An integer MandelBrot set Program. */
  2. /* Works with EGA and VGA.            */
  3.  
  4. #include <stdio.h>
  5. #include <graph.h>
  6.  
  7. #define not !
  8. #define forever while (1)
  9. #define MAX_ITERATIONS 30
  10. #define MAX_BOUND 10000
  11.  
  12. typedef int coord;
  13. typedef long dcoord;
  14. typedef struct
  15. {   coord x, y;
  16. } point;
  17.  
  18.  
  19.  
  20. struct videoconfig vc;
  21. point ScreenSize, Cursor, Centre, Scale;
  22. float RealX, RealY, Mag;
  23. int ScatX[640], ScatY[480];
  24. int under[20];
  25. char name[12] = { "\0" };
  26. char buf[80];
  27. long new_colors[16]= { 0x000000, 0x252A26, 0x37343F, 0x3F3F3F, 0x2E333F,
  28.     0x00003F, 0x00273F, 0x00363F, 0x003F3F, 0x003F26, 0x2A3F00, 0x3F271B,
  29.     0x3F0000, 0x3F002B, 0x350A35, 0x3F003F };
  30.  
  31. void DoPixel (int x, int y);
  32.  
  33. /* Colour in one pixel. */
  34.  
  35. boolean ClearScreen (void);                         /* Clear the Screen.    */
  36.  
  37. /************ Initialisation routines *********************/
  38.  
  39.  
  40.  
  41. void assert (boolean c)
  42. {
  43.     if (not c)
  44.         fprintf (stderr, "Error!\007");
  45. }
  46.  
  47. void Swap (int *a, int *b)
  48. {   register int c;
  49.  
  50.     c = *a;
  51.     *a = *b;
  52.     *b = c;
  53. }
  54.  
  55. void Init (void)
  56. {   int i;
  57.  
  58.     if (not ClearScreen ())
  59.     {
  60.         printf ("Not supported.");
  61.         exit (0);
  62.     }
  63.     _getvideoconfig (&vc);
  64.     ScreenSize.x = vc.numxpixels;
  65.     ScreenSize.y = vc.numypixels;
  66.     Mag = 1;                                            /* Magnification    */
  67.     Centre.x = ScreenSize.x / 2;                        /* Centre of screen */
  68.     Centre.y = ScreenSize.y / 2;
  69.     ScreenSize.y--;
  70.     /* We decrement this to obtain */
  71.     /* two relatively prime numbers*/
  72.     /* for the screen dimensions.  */
  73.  
  74.     /*------ Shuffle the  Scat  ('scatter') array. ------*/
  75.  
  76.     for (i = 0; i < ScreenSize.x; i++)
  77.         ScatX[i] = i;
  78.     for (i = 0; i < ScreenSize.y; i++)
  79.         ScatY[i] = i;
  80.     for (i = 0; i < ScreenSize.x; i++)
  81.         Swap (&ScatX[i], &ScatX[rand () % ScreenSize.x]);
  82.     for (i = 0; i < ScreenSize.y; i++)
  83.         Swap (&ScatY[i], &ScatY[rand () % ScreenSize.y]);
  84.    LLATI